/*
*
==============================================================================
*  Name        : 
*  Part of     : Omen Game Engine
*  Description : 
*  Version     : 1.0
*
*  Copyright (c) 2013 Lauri Kortevaara.
* 
==============================================================================
*/

#pragma once

#ifdef WIN32
    #include <math.h>
#else
#endif


// Basic data types
#include "OmenDataTypes.h"

// Mathematical elements and systems
#include "OmenVector3d.h"
#include "OmenVector4d.h"
#include "OmenMatrix.h"
//#include "OmenQuaternion.h"


// Basic primitives
#include "OmenSphere.h"
#include "OmenBox.h"
#include "OmenAABB.h"
#include "OmenPlane.h"

// Mathematical constants
namespace Omen
{
    
#define PI          Float(3.1415926535)
#define PI_OVER_2   Float(1.5707963267)
#define PI_OVER_180 Float(0.0174532925)

/// <summary>Omen Engine 2d Vector type</summary>
typedef struct _vector2 {
    Omen::Float x, y;
} Vector2d;


/// <summary>Omen Engine 2d Line type </summary>
typedef struct _line2d {
    Vector2d    start, end;
} Line2d;

class OMEN_API Line3d
{
public:
    Line3d( const Vector3d& v1, const Vector3d& v2 );
    Vector3d start, end;
};

OMEN_API bool   operator==( Line3d& l1, Line3d& l2 );

}